Add rebased Aptos CRE common and loop support#1896
Conversation
|
📊 API Diff Results
|
📊 API Diff Results
|
0f8d364 to
618e65e
Compare
618e65e to
435e3f3
Compare
14af889 to
58cb813
Compare
2268e11 to
62e689e
Compare
There was a problem hiding this comment.
Pull request overview
This PR rebases and narrows the shared Aptos “CRE common” surface in chainlink-common, adding the Aptos loop/service types and compatibility needed by CRE’s integration path (read baseline + write-path shared pieces), and refreshing generated protobuf/gRPC outputs accordingly.
Changes:
- Extend Aptos support with
LedgerVersion, optionalLedgerVersionfor view calls, and capability-to-relayer conversion helpers + tests. - Add Aptos write-status classification helpers + tests for distinguishing forwarder/receiver failures.
- Adjust loop/relayer “finalized head” handling to fall back to
LatestHead(and remove the dedicated finalized-head RPCs), plus update transmitter decoding compatibility and DON time store semantics.
Reviewed changes
Copilot reviewed 41 out of 42 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| sonar-project.properties | Updates Sonar coverage exclusions to reflect regenerated/internal code locations. |
| pkg/workflows/dontime/transmitter_test.go | Adds test ensuring transmit does not delete cached DON times for omitted execution IDs. |
| pkg/workflows/dontime/transmitter.go | Changes transmit behavior to update per-executionID without replacing/deleting the whole map. |
| pkg/workflows/dontime/store.go | Removes replaceDonTimes, aligning store behavior with “preserve cached” semantics. |
| pkg/workflows/dontime/plugin_test.go | Refactors/updates outcome tests for missing/empty observed entries and new transmit semantics. |
| pkg/workflows/dontime/plugin.go | Initializes missing observed entries during outcome processing; changes expiry cleanup behavior and trims logging. |
| pkg/types/relayer.go | Adjusts FinalizedHead contract docs; adds FinalizedHeadService; aliases UnimplementedChainService; adds Aptos LedgerVersion stub. |
| pkg/types/mocks/aptos_service.go | Regenerates mock to include LedgerVersion. |
| pkg/types/chains/aptos/write_status_test.go | Adds tests for Aptos write VM-status classification helpers. |
| pkg/types/chains/aptos/write_status.go | Implements Aptos write VM-status classification (forwarder vs receiver, retryable vs terminal). |
| pkg/types/chains/aptos/capability_convert_test.go | Adds tests for capability payload conversion to relayer types. |
| pkg/types/chains/aptos/capability_convert.go | Adds conversion logic from Aptos capability payload/type tags to relayer types. |
| pkg/types/chains/aptos/aptos.go | Adds LedgerVersion to client interface and optional LedgerVersion to ViewRequest. |
| pkg/loop/relayer_service_test.go | Adds test asserting FinalizedHead falls back to LatestHead. |
| pkg/loop/relayer_service.go | Implements finalized-head fallback via FinalizedHeadService type assertion, else LatestHead. |
| pkg/loop/internal/relayerset/server.go | Removes relayerset finalized-head RPC handler. |
| pkg/loop/internal/relayerset/relayerset_test.go | Adds Aptos LedgerVersion and View-with-ledger-version tests. |
| pkg/loop/internal/relayerset/relayer.go | Makes relayerset FinalizedHead fall back to LatestHead. |
| pkg/loop/internal/relayerset/client.go | Removes relayerset client finalized-head RPC wrapper. |
| pkg/loop/internal/relayerset/aptos.go | Adds Aptos LedgerVersion RPC wiring and passes through optional view LedgerVersion. |
| pkg/loop/internal/relayer/test/relayer.go | Updates test relayer FinalizedHead to return LatestHead. |
| pkg/loop/internal/relayer/relayer.go | Removes loop relayer finalized-head RPC; makes client fallback to LatestHead. |
| pkg/loop/internal/relayer/pluginprovider/contractreader/test/loop_server_tester.go | Avoids require in goroutine; stores server reference and ignores Serve error. |
| pkg/loop/internal/relayer/aptos_test.go | Adds gRPC round-trip tests for Aptos LedgerVersion and view LedgerVersion. |
| pkg/loop/internal/relayer/aptos.go | Adds Aptos LedgerVersion RPC + optional LedgerVersion in view request mapping. |
| pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go | Regenerates relayerset gRPC stubs removing finalized-head RPC. |
| pkg/loop/internal/pb/relayerset/relayerset.proto | Removes relayerset finalized-head RPC/messages. |
| pkg/loop/internal/pb/relayerset/relayerset.pb.go | Regenerates relayerset protobuf output after API removal. |
| pkg/loop/internal/pb/relayer_grpc.pb.go | Regenerates relayer gRPC stubs removing finalized-head RPC. |
| pkg/loop/internal/pb/relayer.proto | Removes relayer finalized-head RPC/messages. |
| pkg/loop/internal/pb/relayer.pb.go | Regenerates relayer protobuf output after API removal. |
| pkg/loop/internal/example-relay/main.go | Updates example relayer FinalizedHead to return LatestHead. |
| pkg/loop/internal/core/services/capability/capabilities_registry_test.go | Adds tests for transmitter account decoding compatibility. |
| pkg/loop/internal/core/services/capability/capabilities_registry.go | Adds transmitterAccountToBytes to support 0x-prefixed hex and raw-bytes compatibility. |
| pkg/chains/aptos/aptos_grpc.pb.go | Regenerates Aptos gRPC stubs adding LedgerVersion RPC. |
| pkg/chains/aptos/aptos.proto | Adds LedgerVersion RPC and optional ledger_version on view request. |
| pkg/chains/aptos/aptos.pb.go | Regenerates Aptos protobuf output for LedgerVersion and optional view ledger_version. |
| pkg/capabilities/v2/chain-capabilities/solana/generate.go | Temporarily disables Solana proto regeneration (missing source proto). |
| pkg/capabilities/v2/chain-capabilities/evm/client.pb.go | Updates generated EVM capability proto output (chain selector/rawDesc changes). |
| pkg/capabilities/v2/chain-capabilities/aptos/client.pb.go | Updates generated Aptos capability proto output (view ledger version + receiver execution status field). |
| go.mod | Bumps chainlink-protos/cre/go dependency to the rebased version. |
| go.sum | Updates sums for the bumped chainlink-protos/cre/go version. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
|
This PR is stale because it has been open 30 days with no activity. |
Summary
What changed
LedgerVersionsupport used by the Aptos read flowWhy
The Aptos local CRE stack needs the common Aptos loop/service surface from the earlier read-capability work, plus the shared compatibility pieces consumed by the write path. This PR keeps that layer narrow so downstream repos do not need to reach around
chainlink-common.Testing
go test ./pkg/types/chains/aptos ./pkg/loop/internal/relayer ./pkg/loop/internal/relayerset ./pkg/loop/internal/core/services/capability -count=1CI refs